package com.billdowney.util.regex;

import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * @Description: 正则匹配工具类
 * @author: 唐路钧
 * @date: 2018年11月26日 下午4:13:53
 */
public class MatcherUtil {

	/**
	 * @Description: 传入正则表达式和匹配的数据来获得字符串数组
	 * @param regex 正则表达式
	 * @param input 匹配的数据
	 * @return 匹配到的字符串
	 * @author: 唐路钧
	 * @date: 2018年11月26日 下午4:16:10
	 */
	public static List<String> getStrs(String regex, CharSequence input) {
		List<String> strs = new ArrayList<String>();
		Matcher matcher = Pattern.compile(regex).matcher(input);
		while (matcher.find()) {
			strs.add(matcher.group());
		}
		return strs;
	}

	/**
	 * 传入正则表达式和匹配的数据来获得字符串数组
	 * 
	 * @param regex 正则表达式
	 * @param input 匹配的数据
	 * @return 匹配到的字符串
	 * @author: 超级小富翁 - BillDowney
	 * @date: 2019年4月29日 下午3:27:35
	 */
	public static Set<String> getStrsBySet(String regex, CharSequence input) {
		Set<String> strs = new HashSet<String>();
		Matcher matcher = Pattern.compile(regex).matcher(input);
		while (matcher.find()) {
			strs.add(matcher.group());
		}
		return strs;
	}

	/**
	 * @Description: 匹配正则表达式和字符串
	 * @param regex 正则表达式
	 * @param input 匹配的数据
	 * @return 匹配的结果
	 * @author: 唐路钧
	 * @date: 2018年12月21日 上午10:29:33
	 */
	public static boolean matcher(String regex, CharSequence input) {
		return Pattern.compile(regex).matcher(input).find();
	}

}
